function libs = getLibDependency(modelName)
%GETLIBDEPENDENCY 获取模型依赖的用户库
%   此函数分析指定Simulink模型的依赖关系，返回该模型依赖的所有用户自定义库文件列表。
%   不包括MATLAB/Simulink内置库，仅返回用户创建的库文件。
%
%【语法】
%   libs = getLibDependency(modelName)
%
%【输入参数】
%   modelName - Simulink模型名称（字符串）
%
%【输出参数】
%   libs - 字符串元胞数组，包含模型依赖的所有用户库文件路径
%          如果模型不依赖任何用户库，返回空元胞数组
%
%【说明】
%   - 使用dependencies.fileDependencyAnalysis分析文件依赖关系
%   - 遍历所有依赖文件，筛选出库文件（.slx文件，exist返回4）
%   - 使用Simulink.MDLInfo检查文件是否为库文件
%   - 只返回用户自定义的库文件，排除系统库
%
%【库文件识别条件】
%   1. 文件存在且为Simulink文件（exist返回4）
%   2. MDLInfo.IsLibrary属性为true
%   3. 不是MATLAB/Simulink内置库
%
%【使用场景】
%   - 模型依赖关系分析
%   - 项目打包和部署
%   - 库文件管理和版本控制
%   - 模型移植和迁移
%
%【相关功能】
%   - 结合viewModelDependency可以可视化查看依赖关系
%   - 结合viewFileDependency可以查看完整文件依赖
%
%【依赖项】
%   dependencies.fileDependencyAnalysis - 文件依赖分析工具
%   Simulink.MDLInfo - Simulink模型信息获取
%   exist - 文件存在性检查
%   cellstr - 字符串转元胞数组
%
%【参见】
%   viewModelDependency, viewFileDependency, dependencies.fileDependencyAnalysis


files = dependencies.fileDependencyAnalysis(modelName);
libs = {};
numLibs = 0;
if ischar(files)
    files = cellstr(files);
end
for i = 1:length(files)
    if (exist(files{i}) == 4) && (Simulink.MDLInfo(files{i}).IsLibrary)
        numLibs = numLibs + 1;
        libs{numLibs,1} = files{i};
    end
end

end
